-- SaffronCG7Impl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by hederman.pa at August 17, 1987 3:57:30 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 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[416] _ Seetypelista; prodLinkArray[417] _ Seetypelistb; prodLinkArray[418] _ Seetypelistc; prodLinkArray[419] _ Seetypelistd; prodLinkArray[420] _ Seetypeliste; prodLinkArray[421] _ Seetypelistf; prodLinkArray[422] _ Seetypelistg; prodLinkArray[423] _ Seetypelisth; prodLinkArray[424] _ Seemodulelista; prodLinkArray[425] _ Seemodulelistb; prodLinkArray[426] _ Seemoduleitemone; prodLinkArray[427] _ Seemoduleitemtwo; prodLinkArray[428] _ Seetildea; prodLinkArray[429] _ Seetildeb; prodLinkArray[430] _ Seepairlistone; prodLinkArray[431] _ Seepairlistmany; prodLinkArray[432] _ Seepairitem; prodLinkArray[433] _ Seetypeida; prodLinkArray[434] _ Seetypeidb; prodLinkArray[435] _ Seetypeidc; prodLinkArray[436] _ SeetypeidPa; prodLinkArray[437] _ SeetypeidPb; prodLinkArray[438] _ Seeexplistorderlist; prodLinkArray[439] _ Seeexplistkeylist; prodLinkArray[440] _ Seekeylistone; prodLinkArray[441] _ Seekeylistmore; prodLinkArray[442] _ Seekeyitema; prodLinkArray[443] _ Seekeyitemb; prodLinkArray[444] _ Seelockspresent; prodLinkArray[445] _ Seelocksabsent; prodLinkArray[446] _ Seelambdapresent; prodLinkArray[447] _ Seelambdaabsent; prodLinkArray[448] _ Seeopenbindlist; prodLinkArray[449] _ Seeopenempty; prodLinkArray[450] _ Seebindlistitem; prodLinkArray[451] _ Seebindlistlist; prodLinkArray[452] _ Seecaseheadplain; prodLinkArray[453] _ Seecaseheaddiscrim; prodLinkArray[454] _ Seescopea; prodLinkArray[455] _ Seescopeb; prodLinkArray[456] _ Seeenablesa; prodLinkArray[457] _ Seeenablesb; prodLinkArray[458] _ Seeenablesc; prodLinkArray[459] _ Seeenablesd; prodLinkArray[460] _ Seeenablese; prodLinkArray[461] _ Seestatementlistempty; prodLinkArray[462] _ Seestatementlistb; prodLinkArray[463] _ Seestatementlistc; prodLinkArray[464] _ SeestatementlistPa; prodLinkArray[465] _ SeestatementlistPb; prodLinkArray[466] _ Seesafeempty; prodLinkArray[467] _ Seesafeno; prodLinkArray[468] _ 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..