<> <> <> <> 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..