SaffronCG7Impl.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Generated by BJackson.pa at April 27, 1987 10:57:02 pm PDT
using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT
DIRECTORY
SaffronAG8Def,
SaffronAG4Def,
SaffronAG5Def,
SaffronAG2Def,
SaffronAG1Def,
SaffronAG9Def,
SaffronAG7Def,
SaffronAG6Def,
SaffronGenericDef,
ThreeC4Support,
SaffronCG7Def USING[],
SaffronATDef;
SaffronCG7Impl: CEDAR PROGRAM IMPORTS SaffronAG8Def, SaffronAG4Def, SaffronAG5Def, SaffronAG2Def, SaffronAG1Def, SaffronAG9Def, SaffronAG7Def, SaffronAG6Def EXPORTS SaffronCG7Def=
BEGIN
OPEN SaffronAG8Def, SaffronAG4Def, SaffronAG5Def, SaffronAG2Def, SaffronAG1Def, SaffronAG9Def, SaffronAG7Def, SaffronAG6Def, SaffronGenericDef, ThreeC4Support, SaffronATDef;
SaffronCG7LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
prodLinkArray[405] ← Seetypelista;
prodLinkArray[406] ← Seetypelistb;
prodLinkArray[407] ← Seetypelistc;
prodLinkArray[408] ← Seetypelistd;
prodLinkArray[409] ← Seetypeliste;
prodLinkArray[410] ← Seetypelistf;
prodLinkArray[411] ← Seetypelistg;
prodLinkArray[412] ← Seetypelisth;
prodLinkArray[413] ← Seemodulelista;
prodLinkArray[414] ← Seemodulelistb;
prodLinkArray[415] ← Seemoduleitemone;
prodLinkArray[416] ← Seemoduleitemtwo;
prodLinkArray[417] ← Seetildea;
prodLinkArray[418] ← Seetildeb;
prodLinkArray[419] ← Seepairlistone;
prodLinkArray[420] ← Seepairlistmany;
prodLinkArray[421] ← Seepairitem;
prodLinkArray[422] ← Seetypeida;
prodLinkArray[423] ← Seetypeidb;
prodLinkArray[424] ← Seetypeidc;
prodLinkArray[425] ← SeetypeidPa;
prodLinkArray[426] ← SeetypeidPb;
prodLinkArray[427] ← Seeexplistorderlist;
prodLinkArray[428] ← Seeexplistkeylist;
prodLinkArray[429] ← Seekeylistone;
prodLinkArray[430] ← Seekeylistmore;
prodLinkArray[431] ← Seekeyitema;
prodLinkArray[432] ← Seekeyitemb;
prodLinkArray[433] ← Seelockspresent;
prodLinkArray[434] ← Seelocksabsent;
prodLinkArray[435] ← Seelambdapresent;
prodLinkArray[436] ← Seelambdaabsent;
prodLinkArray[437] ← Seeopenbindlist;
prodLinkArray[438] ← Seeopenempty;
prodLinkArray[439] ← Seebindlistitem;
prodLinkArray[440] ← Seebindlistlist;
prodLinkArray[441] ← Seecaseheadplain;
prodLinkArray[442] ← Seecaseheaddiscrim;
prodLinkArray[443] ← Seescopea;
prodLinkArray[444] ← Seescopeb;
prodLinkArray[445] ← Seeenablesa;
prodLinkArray[446] ← Seeenablesb;
prodLinkArray[447] ← Seeenablesc;
prodLinkArray[448] ← Seeenablesd;
prodLinkArray[449] ← Seeenablese;
prodLinkArray[450] ← Seestatementlistempty;
prodLinkArray[451] ← Seestatementlistb;
prodLinkArray[452] ← Seestatementlistc;
prodLinkArray[453] ← SeestatementlistPa;
prodLinkArray[454] ← SeestatementlistPb;
prodLinkArray[455] ← Seesafeempty;
prodLinkArray[456] ← Seesafeno;
prodLinkArray[457] ← Seesafeyes;
END;
Seetypelista: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typecons: TypeExpNode;
default: DefaultNode;
default ← NARROW[stack.first];
stack ← stack.rest;
typecons ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeListoneProdNode[position, length, BuildTypeItemProdNode[typecons.position, default.position + default.length - typecons.position, typecons, default]], stack];
RETURN[stack]
END;
Seetypelistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeid: TypeIdNode;
default: DefaultNode;
default ← NARROW[stack.first];
stack ← stack.rest;
typeid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeListoneProdNode[position, length, BuildTypeItemProdNode[typeid.position, default.position + default.length - typeid.position, BuildTypeExptypeidProdNode[typeid.position, typeid.length, typeid], default]], stack];
RETURN[stack]
END;
Seetypelistc: 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[BuildTypeListoneProdNode[position, length, BuildTypeItemProdNode[id.position, id.position + id.length + id.position + id.length - id.position - id.length - id.position, BuildTypeExptypeidProdNode[id.position, id.length, BuildTypeIdidProdNode[id.position, id.length, id]], BuildDefaultemptyProdNode[id.position + id.length, id.position + id.length - id.position - id.length]]], stack];
RETURN[stack]
END;
Seetypelistd: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
defaultopt: DefaultNode;
defaultopt ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeListoneProdNode[position, length, BuildTypeItemProdNode[id.position, defaultopt.position + defaultopt.length - id.position, BuildTypeExptypeidProdNode[id.position, id.length, BuildTypeIdidProdNode[id.position, id.length, id]], defaultopt]], stack];
RETURN[stack]
END;
Seetypeliste: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typecons: TypeExpNode;
default: DefaultNode;
typelist: TypeListNode;
typelist ← NARROW[stack.first];
stack ← stack.rest;
default ← NARROW[stack.first];
stack ← stack.rest;
typecons ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeListmanyProdNode[position, length, BuildTypeListoneProdNode[typecons.position, default.position + default.length - typecons.position, BuildTypeItemProdNode[typecons.position, default.position + default.length - typecons.position, typecons, default]], typelist], stack];
RETURN[stack]
END;
Seetypelistf: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeid: TypeIdNode;
default: DefaultNode;
typelist: TypeListNode;
typelist ← NARROW[stack.first];
stack ← stack.rest;
default ← NARROW[stack.first];
stack ← stack.rest;
typeid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeListmanyProdNode[position, length, BuildTypeListoneProdNode[typeid.position, default.position + default.length - typeid.position, BuildTypeItemProdNode[typeid.position, default.position + default.length - typeid.position, BuildTypeExptypeidProdNode[typeid.position, typeid.length, typeid], default]], typelist], stack];
RETURN[stack]
END;
Seetypelistg: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
typelist: TypeListNode;
typelist ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeListmanyProdNode[position, length, BuildTypeListoneProdNode[id.position, id.position + id.length + id.position + id.length - id.position - id.length - id.position, BuildTypeItemProdNode[id.position, id.position + id.length + id.position + id.length - id.position - id.length - id.position, BuildTypeExptypeidProdNode[id.position, id.length, BuildTypeIdidProdNode[id.position, id.length, id]], BuildDefaultemptyProdNode[id.position + id.length, id.position + id.length - id.position - id.length]]], typelist], stack];
RETURN[stack]
END;
Seetypelisth: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
defaultopt: DefaultNode;
typelist: TypeListNode;
typelist ← NARROW[stack.first];
stack ← stack.rest;
defaultopt ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeListmanyProdNode[position, length, BuildTypeListoneProdNode[id.position, defaultopt.position + defaultopt.length - id.position, BuildTypeItemProdNode[id.position, defaultopt.position + defaultopt.length - id.position, BuildTypeExptypeidProdNode[id.position, id.length, BuildTypeIdidProdNode[id.position, id.length, id]], defaultopt]], typelist], stack];
RETURN[stack]
END;
Seemodulelista: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
moduleitem: ModuleItemNode;
moduleitem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildModuleListmoreProdNode[position, length, BuildModuleListemptyProdNode[moduleitem.position, moduleitem.position - moduleitem.length], moduleitem], stack];
RETURN[stack]
END;
Seemodulelistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
modulelist: ModuleListNode;
moduleitem: ModuleItemNode;
moduleitem ← NARROW[stack.first];
stack ← stack.rest;
modulelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildModuleListmoreProdNode[position, length, modulelist, moduleitem], stack];
RETURN[stack]
END;
Seemoduleitemone: 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[BuildModuleItemoneProdNode[position, length, id], stack];
RETURN[stack]
END;
Seemoduleitemtwo: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idrecord: idNode;
idtype: idNode;
idtype ← NARROW[stack.first];
stack ← stack.rest;
idrecord ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildModuleItemtwoProdNode[position, length, idrecord, idtype], stack];
RETURN[stack]
END;
Seetildea: 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;
Seetildeb: 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;
Seepairlistone: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
pairitem: PairItemNode;
pairitem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildPairListoneProdNode[position, length, pairitem], stack];
RETURN[stack]
END;
Seepairlistmany: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
pairlist: PairListNode;
pairitem: PairItemNode;
pairitem ← NARROW[stack.first];
stack ← stack.rest;
pairlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildPairListmanyProdNode[position, length, pairlist, BuildPairListoneProdNode[pairitem.position, pairitem.length, pairitem]], stack];
RETURN[stack]
END;
Seepairitem: 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;
typeexp: TypeExpNode;
default: DefaultNode;
default ← NARROW[stack.first];
stack ← stack.rest;
typeexp ← 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, typeexp, default], stack];
RETURN[stack]
END;
Seetypeida: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
ida: idNode;
idb: idNode;
idb ← NARROW[stack.first];
stack ← stack.rest;
ida ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeIdqualifierProdNode[position, length, BuildTypeIdidProdNode[idb.position, idb.length, idb], ida], stack];
RETURN[stack]
END;
Seetypeidb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
typeid: TypeIdNode;
typeid ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeIdqualifierProdNode[position, length, typeid, id], stack];
RETURN[stack]
END;
Seetypeidc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeidP: TypeIdNode;
typeidP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[typeidP, stack];
RETURN[stack]
END;
SeetypeidPa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
ida: idNode;
idb: idNode;
idb ← NARROW[stack.first];
stack ← stack.rest;
ida ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeIdqualifierProdNode[position, length, BuildTypeIdidProdNode[ida.position, ida.length, ida], idb], stack];
RETURN[stack]
END;
SeetypeidPb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeidP: TypeIdNode;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
typeidP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeIdqualifierProdNode[position, length, typeidP, id], stack];
RETURN[stack]
END;
Seeexplistorderlist: 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[BuildExpListorderlistProdNode[position, length, orderlist], stack];
RETURN[stack]
END;
Seeexplistkeylist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
keylist: KeyListNode;
keylist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpListkeylistProdNode[position, length, keylist], stack];
RETURN[stack]
END;
Seekeylistone: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
keyitem: KeyItemNode;
keyitem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildKeyListoneProdNode[position, length, keyitem], stack];
RETURN[stack]
END;
Seekeylistmore: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
keylist: KeyListNode;
keyitem: KeyItemNode;
keyitem ← NARROW[stack.first];
stack ← stack.rest;
keylist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildKeyListmoreProdNode[position, length, keylist, keyitem], stack];
RETURN[stack]
END;
Seekeyitema: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
optexp: OptExpNode;
optexp ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildKeyItemProdNode[position, length, id, optexp], stack];
RETURN[stack]
END;
Seekeyitemb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
optexp: OptExpNode;
optexp ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildKeyItemProdNode[position, length, id, optexp], stack];
RETURN[stack]
END;
Seelockspresent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
primary: ExpNode;
lambda: LambdaNode;
lambda ← NARROW[stack.first];
stack ← stack.rest;
primary ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildLockspresentProdNode[position, length, primary, lambda], stack];
RETURN[stack]
END;
Seelocksabsent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildLocksabsentProdNode[position, length], stack];
RETURN[stack]
END;
Seelambdapresent: 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[BuildLambdapresentProdNode[position, length, ident, typeexp], stack];
RETURN[stack]
END;
Seelambdaabsent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildLambdaabsentProdNode[position, length], stack];
RETURN[stack]
END;
Seeopenbindlist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
bindlist: BindListNode;
bindlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[bindlist, stack];
RETURN[stack]
END;
Seeopenempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildBindListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seebindlistitem: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
binditem: BindItemNode;
binditem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBindListmoreProdNode[position, length, BuildBindListemptyProdNode[binditem.position, binditem.position - binditem.length], binditem], stack];
RETURN[stack]
END;
Seebindlistlist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
bindlist: BindListNode;
binditem: BindItemNode;
binditem ← NARROW[stack.first];
stack ← stack.rest;
bindlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBindListmoreProdNode[position, length, bindlist, binditem], stack];
RETURN[stack]
END;
Seecaseheadplain: 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[BuildSelectHeadplainProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seecaseheaddiscrim: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
binditem: BindItemNode;
optexp: OptExpNode;
optexp ← NARROW[stack.first];
stack ← stack.rest;
binditem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSelectHeaddiscriminatingProdNode[position, length, binditem, optexp], stack];
RETURN[stack]
END;
Seescopea: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
open: BindListNode;
enables: CatchNode;
statementlist: StatementListNode;
statementlist ← NARROW[stack.first];
stack ← stack.rest;
enables ← NARROW[stack.first];
stack ← stack.rest;
open ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildScopeProdNode[position, length, open, enables, BuildOptDecListabsentProdNode[statementlist.position, statementlist.position - statementlist.length], statementlist], stack];
RETURN[stack]
END;
Seescopeb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
open: BindListNode;
enables: CatchNode;
declist: DecListNode;
statementlist: StatementListNode;
statementlist ← NARROW[stack.first];
stack ← stack.rest;
declist ← NARROW[stack.first];
stack ← stack.rest;
enables ← NARROW[stack.first];
stack ← stack.rest;
open ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildScopeProdNode[position, length, open, enables, BuildOptDecListpresentProdNode[declist.position, declist.length, declist], statementlist], stack];
RETURN[stack]
END;
Seeenablesa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchcase: CatchCaseNode;
catchcase ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchProdNode[position, length, BuildCatchCaseListmoreProdNode[catchcase.position, catchcase.position + catchcase.length - catchcase.position, BuildCatchCaseListemptyProdNode[catchcase.position, catchcase.position - catchcase.length], catchcase], BuildCatchAnyabsentProdNode[catchcase.position + catchcase.length, catchcase.position + catchcase.length - catchcase.position - catchcase.length]], stack];
RETURN[stack]
END;
Seeenablesb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchany: CatchAnyNode;
catchany ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchProdNode[position, length, BuildCatchCaseListemptyProdNode[catchany.position, catchany.position - catchany.length], catchany], stack];
RETURN[stack]
END;
Seeenablesc: 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;
Seeenablesd: 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;
Seeenablese: 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;
Seestatementlistempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seestatementlistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
statementlistP: StatementListNode;
statementlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[statementlistP, stack];
RETURN[stack]
END;
Seestatementlistc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
statementlistP: StatementListNode;
statementlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[statementlistP, stack];
RETURN[stack]
END;
SeestatementlistPa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementListmoreProdNode[position, length, BuildStatementListemptyProdNode[statement.position, statement.position - statement.length], statement], stack];
RETURN[stack]
END;
SeestatementlistPb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
statementlistP: StatementListNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
statementlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementListmoreProdNode[position, length, statementlistP, statement], stack];
RETURN[stack]
END;
Seesafeempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildSafeemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seesafeno: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildSafenoProdNode[position, length], stack];
RETURN[stack]
END;
Seesafeyes: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildSafeyesProdNode[position, length], stack];
RETURN[stack]
END;
END..