SaffronCG1Impl.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Generated by BJackson.pa at April 27, 1987 10:56:52 pm PDT
using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT
DIRECTORY
SaffronAG7Def,
SaffronAG4Def,
SaffronAG2Def,
SaffronAG5Def,
SaffronAG9Def,
SaffronAG1Def,
SaffronGenericDef,
ThreeC4Support,
SaffronCG1Def USING[],
SaffronATDef;
SaffronCG1Impl: CEDAR PROGRAM IMPORTS SaffronAG7Def, SaffronAG4Def, SaffronAG2Def, SaffronAG5Def, SaffronAG9Def, SaffronAG1Def EXPORTS SaffronCG1Def=
BEGIN
OPEN SaffronAG7Def, SaffronAG4Def, SaffronAG2Def, SaffronAG5Def, SaffronAG9Def, SaffronAG1Def, SaffronGenericDef, ThreeC4Support, SaffronATDef;
SaffronCG1LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
prodLinkArray[0] ← Seemaingoal;
prodLinkArray[1] ← Seetopmodulep;
prodLinkArray[2] ← Seetopscope;
prodLinkArray[3] ← Seegoala;
prodLinkArray[4] ← Seegoalb;
prodLinkArray[5] ← Seemoduleimpl;
prodLinkArray[6] ← Seemoduledef;
prodLinkArray[7] ← Seedirectorya;
prodLinkArray[8] ← Seedirectoryb;
prodLinkArray[9] ← Seedirectoryc;
prodLinkArray[10] ← Seeincludelista;
prodLinkArray[11] ← Seeincludelistb;
prodLinkArray[12] ← Seeincludeitema;
prodLinkArray[13] ← Seeincludeitemb;
prodLinkArray[14] ← Seeincludeitemc;
prodLinkArray[15] ← Seeincludeitemd;
prodLinkArray[16] ← Seeusingnothing;
prodLinkArray[17] ← Seeusingrestricted;
prodLinkArray[18] ← Seeusingunrestricted;
prodLinkArray[19] ← Seedefbodya;
prodLinkArray[20] ← Seedefbodyb;
prodLinkArray[21] ← Seedefbodyc;
prodLinkArray[22] ← Seedefbodyd;
prodLinkArray[23] ← Seedefhead;
prodLinkArray[24] ← Seedefinitions;
prodLinkArray[25] ← Seecedaryes;
prodLinkArray[26] ← Seecedarno;
prodLinkArray[27] ← Seeproghead;
prodLinkArray[28] ← Seeresident;
prodLinkArray[29] ← Seeclassprogram;
prodLinkArray[30] ← Seeclassmonitor;
prodLinkArray[31] ← Seeinterface;
prodLinkArray[32] ← Seeexportsa;
prodLinkArray[33] ← Seeexportsb;
prodLinkArray[34] ← Seeexportsc;
prodLinkArray[35] ← Seebinditema;
prodLinkArray[36] ← Seebinditemb;
prodLinkArray[37] ← Seebinditemc;
prodLinkArray[38] ← Seecaselabeltype;
prodLinkArray[39] ← Seecaselabeltest;
prodLinkArray[40] ← SeecaselabelPone;
prodLinkArray[41] ← SeecaselabelPmore;
prodLinkArray[42] ← Seecasetesta;
prodLinkArray[43] ← Seecasetestb;
prodLinkArray[44] ← Seeblocka;
prodLinkArray[45] ← Seeblockb;
prodLinkArray[46] ← Seeexitslist;
prodLinkArray[47] ← Seeexitsempty;
prodLinkArray[48] ← Seepublicpublic;
prodLinkArray[49] ← Seepublicprivate;
prodLinkArray[50] ← Seepublicempty;
END;
Seemaingoal: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
top: TopNode;
top ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[top, stack];
RETURN[stack]
END;
Seetopmodulep: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
goal: ModulePNode;
goal ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTopmodulepProdNode[position, length, goal], stack];
RETURN[stack]
END;
Seetopscope: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
scope: ScopeNode;
scope ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTopscopeProdNode[position, length, scope], stack];
RETURN[stack]
END;
Seegoala: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
module: ModulePNode;
module ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[module, stack];
RETURN[stack]
END;
Seegoalb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
module: ModulePNode;
module ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[module, stack];
RETURN[stack]
END;
Seemoduleimpl: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
directory: DirectoryNode;
identlist: IdentListNode;
cedar: CedarNode;
proghead: ProgHeadNode;
trusted: JunkNode;
checked: CheckedNode;
block: BlockNode;
block ← NARROW[stack.first];
stack ← stack.rest;
checked ← NARROW[stack.first];
stack ← stack.rest;
trusted ← NARROW[stack.first];
stack ← stack.rest;
proghead ← NARROW[stack.first];
stack ← stack.rest;
cedar ← NARROW[stack.first];
stack ← stack.rest;
identlist ← NARROW[stack.first];
stack ← stack.rest;
directory ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildModulePimplProdNode[position, length, directory, identlist, cedar, proghead, checked, block], stack];
RETURN[stack]
END;
Seemoduledef: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
directory: DirectoryNode;
identlist: IdentListNode;
cedar: CedarNode;
defhead: DefHeadNode;
defbody: DefBodyNode;
defbody ← NARROW[stack.first];
stack ← stack.rest;
defhead ← NARROW[stack.first];
stack ← stack.rest;
cedar ← NARROW[stack.first];
stack ← stack.rest;
identlist ← NARROW[stack.first];
stack ← stack.rest;
directory ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildModulePdefProdNode[position, length, directory, identlist, cedar, defhead, defbody], stack];
RETURN[stack]
END;
Seedirectorya: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDirectoryemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seedirectoryb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
includelist: DirectoryNode;
includelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[includelist, stack];
RETURN[stack]
END;
Seedirectoryc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDirectoryemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeincludelista: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
includeitem: IncludeItemNode;
includeitem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDirectorymoreProdNode[position, length, BuildDirectoryemptyProdNode[includeitem.position, includeitem.position - includeitem.length], includeitem], stack];
RETURN[stack]
END;
Seeincludelistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
includelist: DirectoryNode;
includeitem: IncludeItemNode;
includeitem ← NARROW[stack.first];
stack ← stack.rest;
includelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDirectorymoreProdNode[position, length, includelist, includeitem], stack];
RETURN[stack]
END;
Seeincludeitema: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
string: stringNode;
using: UsingNode;
using ← NARROW[stack.first];
stack ← stack.rest;
string ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIncludeItemfrompProdNode[position, length, id, string, using], stack];
RETURN[stack]
END;
Seeincludeitemb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
using: UsingNode;
using ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIncludeItemtypeProdNode[position, length, id, using], stack];
RETURN[stack]
END;
Seeincludeitemc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
using: UsingNode;
using ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIncludeItemplainProdNode[position, length, id, using], stack];
RETURN[stack]
END;
Seeincludeitemd: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idlocal: idNode;
idglobal: idNode;
using: UsingNode;
using ← NARROW[stack.first];
stack ← stack.rest;
idglobal ← NARROW[stack.first];
stack ← stack.rest;
idlocal ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIncludeItemtypeandidProdNode[position, length, idlocal, idglobal, using], stack];
RETURN[stack]
END;
Seeusingnothing: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildUsingnothingProdNode[position, length], stack];
RETURN[stack]
END;
Seeusingrestricted: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idlist: IdListNode;
idlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildUsingrestrictedProdNode[position, length, idlist], stack];
RETURN[stack]
END;
Seeusingunrestricted: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildUsingunrestrictedProdNode[position, length], stack];
RETURN[stack]
END;
Seedefbodya: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
open: BindListNode;
declist: DecListNode;
declist ← NARROW[stack.first];
stack ← stack.rest;
open ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefBodyProdNode[position, length, open, declist], stack];
RETURN[stack]
END;
Seedefbodyb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
open: BindListNode;
declist: DecListNode;
declist ← NARROW[stack.first];
stack ← stack.rest;
open ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefBodyProdNode[position, length, open, declist], stack];
RETURN[stack]
END;
Seedefbodyc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
open: BindListNode;
declist: DecListNode;
declist ← NARROW[stack.first];
stack ← stack.rest;
open ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefBodyProdNode[position, length, open, declist], stack];
RETURN[stack]
END;
Seedefbodyd: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
open: BindListNode;
declist: DecListNode;
declist ← NARROW[stack.first];
stack ← stack.rest;
open ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefBodyProdNode[position, length, open, declist], stack];
RETURN[stack]
END;
Seedefhead: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
definitions: JunkNode;
locks: LocksNode;
imports: ModuleListNode;
shares: SharesNode;
tilde: JunkNode;
public: AccessNode;
public ← NARROW[stack.first];
stack ← stack.rest;
tilde ← NARROW[stack.first];
stack ← stack.rest;
shares ← NARROW[stack.first];
stack ← stack.rest;
imports ← NARROW[stack.first];
stack ← stack.rest;
locks ← NARROW[stack.first];
stack ← stack.rest;
definitions ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefHeadProdNode[position, length, locks, imports, shares, public], stack];
RETURN[stack]
END;
Seedefinitions: 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;
Seecedaryes: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildCedaryesProdNode[position, length], stack];
RETURN[stack]
END;
Seecedarno: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildCedarnoProdNode[position, length], stack];
RETURN[stack]
END;
Seeproghead: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
resident: JunkNode;
safe: SafeNode;
class: ClassNode;
arguments: ArgumentsNode;
locks: LocksNode;
interface: InterfaceNode;
tilde: JunkNode;
public: AccessNode;
public ← NARROW[stack.first];
stack ← stack.rest;
tilde ← NARROW[stack.first];
stack ← stack.rest;
interface ← NARROW[stack.first];
stack ← stack.rest;
locks ← NARROW[stack.first];
stack ← stack.rest;
arguments ← NARROW[stack.first];
stack ← stack.rest;
class ← NARROW[stack.first];
stack ← stack.rest;
safe ← NARROW[stack.first];
stack ← stack.rest;
resident ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildProgHeadProdNode[position, length, safe, class, arguments, locks, interface, public], stack];
RETURN[stack]
END;
Seeresident: 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;
Seeclassprogram: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildClassprogramProdNode[position, length], stack];
RETURN[stack]
END;
Seeclassmonitor: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildClassmonitorProdNode[position, length], stack];
RETURN[stack]
END;
Seeinterface: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
imports: ModuleListNode;
exports: ModuleListNode;
shares: SharesNode;
shares ← NARROW[stack.first];
stack ← stack.rest;
exports ← NARROW[stack.first];
stack ← stack.rest;
imports ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildInterfaceProdNode[position, length, imports, exports, shares], stack];
RETURN[stack]
END;
Seeexportsa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildModuleListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeexportsb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
modulelist: ModuleListNode;
modulelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[modulelist, stack];
RETURN[stack]
END;
Seeexportsc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildModuleListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seebinditema: 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[BuildBindItemunnamedProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seebinditemb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBindItemnamedProdNode[position, length, id, exp], stack];
RETURN[stack]
END;
Seebinditemc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBindItemnamedProdNode[position, length, id, exp], stack];
RETURN[stack]
END;
Seecaselabeltype: 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[BuildSelectLabeltypeProdNode[position, length, ident, typeexp], stack];
RETURN[stack]
END;
Seecaselabeltest: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
caselabelP: SelectTestListNode;
caselabelP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSelectLabeltestProdNode[position, length, caselabelP], stack];
RETURN[stack]
END;
SeecaselabelPone: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casetest: RelationNode;
casetest ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSelectTestListoneProdNode[position, length, casetest], stack];
RETURN[stack]
END;
SeecaselabelPmore: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
caselabelP: SelectTestListNode;
casetest: RelationNode;
casetest ← NARROW[stack.first];
stack ← stack.rest;
caselabelP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSelectTestListmoreProdNode[position, length, caselabelP, casetest], stack];
RETURN[stack]
END;
Seecasetesta: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
optrelation: RelationNode;
optrelation ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[optrelation, stack];
RETURN[stack]
END;
Seecasetestb: 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[BuildRelationpositiveProdNode[position, length, BuildRelationTailrelopProdNode[exp.position, exp.position + exp.length - exp.position, BuildRelopeqProdNode[exp.position, exp.position - exp.length], exp]], stack];
RETURN[stack]
END;
Seeblocka: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
scope: ScopeNode;
exits: ExitListNode;
exits ← NARROW[stack.first];
stack ← stack.rest;
scope ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBlockProdNode[position, length, scope, exits], stack];
RETURN[stack]
END;
Seeblockb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
scope: ScopeNode;
exits: ExitListNode;
exits ← NARROW[stack.first];
stack ← stack.rest;
scope ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildBlockProdNode[position, length, scope, exits], stack];
RETURN[stack]
END;
Seeexitslist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exitlist: ExitListNode;
exitlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[exitlist, stack];
RETURN[stack]
END;
Seeexitsempty: 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;
Seepublicpublic: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildAccesspublicProdNode[position, length], stack];
RETURN[stack]
END;
Seepublicprivate: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildAccessprivateProdNode[position, length], stack];
RETURN[stack]
END;
Seepublicempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildAccessemptyProdNode[position, length], stack];
RETURN[stack]
END;
END..