DIRECTORY SaffronAG2Def, SaffronAG8Def, SaffronAG1Def, SaffronAG7Def, SaffronAG3Def, SaffronAG6Def, ThreeC4Support, SaffronCG2Def USING[], SaffronATDef; SaffronCG2Impl: CEDAR PROGRAM IMPORTS SaffronAG2Def, SaffronAG8Def, SaffronAG1Def, SaffronAG7Def, SaffronAG3Def, SaffronAG6Def EXPORTS SaffronCG2Def= BEGIN OPEN SaffronAG2Def, SaffronAG8Def, SaffronAG1Def, SaffronAG7Def, SaffronAG3Def, SaffronAG6Def, ThreeC4Support, SaffronATDef; SaffronCG2LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] = BEGIN prodLinkArray[51] _ Seebounds; prodLinkArray[52] _ Seecheckedempty; prodLinkArray[53] _ Seecheckedchecked; prodLinkArray[54] _ Seecheckedtrusted; prodLinkArray[55] _ Seecheckedunchecked; prodLinkArray[56] _ Seedefaulta; prodLinkArray[57] _ Seedefaultempty; prodLinkArray[58] _ SeepositionP; prodLinkArray[59] _ Seeoptbitspresent; prodLinkArray[60] _ Seeoptbitsabsent; prodLinkArray[61] _ Seesumsum; prodLinkArray[62] _ Seesumproduct; prodLinkArray[63] _ Seeproductproduct; prodLinkArray[64] _ Seeproductfactor; prodLinkArray[65] _ Seemultoptimes; prodLinkArray[66] _ Seemultopdivide; prodLinkArray[67] _ Seemultopmod; prodLinkArray[68] _ Seefactorunarysum; prodLinkArray[69] _ Seefactorprimary; prodLinkArray[70] _ Seeaddopplus; prodLinkArray[71] _ Seeaddopminus; prodLinkArray[72] _ Seereadonlyyes; prodLinkArray[73] _ Seereadonlyno; prodLinkArray[74] _ Seecatchany; prodLinkArray[75] _ Seeintervalcc; prodLinkArray[76] _ Seeintervaloc; prodLinkArray[77] _ Seeintervalco; prodLinkArray[78] _ Seeintervaloo; prodLinkArray[79] _ Seeexpifthenelse; prodLinkArray[80] _ Seeexpselect; prodLinkArray[81] _ Seeexpassign; prodLinkArray[82] _ Seeexpmultiassign; prodLinkArray[83] _ Seeexperror; prodLinkArray[84] _ Seeexptransfer; prodLinkArray[85] _ Seeexpdisjunct; prodLinkArray[86] _ Seecaseexplistempty; prodLinkArray[87] _ Seecaseexplistb; prodLinkArray[88] _ Seecaseexplistc; prodLinkArray[89] _ SeecaseexplistPa; prodLinkArray[90] _ SeecaseexplistPb; prodLinkArray[91] _ Seecaseexpitem; END; Seebounds: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; explower: ExpNode; expupper: ExpNode; expupper _ NARROW[stack.first]; stack _ stack.rest; explower _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildBoundsProdNode[position, length, BuildBoundProdNode[explower.position, explower.length, explower], BuildBoundProdNode[expupper.position, expupper.length, expupper]], stack]; RETURN[stack] END; Seecheckedempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildCheckedemptyProdNode[position, length], stack]; RETURN[stack] END; Seecheckedchecked: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildCheckedcheckedProdNode[position, length], stack]; RETURN[stack] END; Seecheckedtrusted: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildCheckedtrustedProdNode[position, length], stack]; RETURN[stack] END; Seecheckedunchecked: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildCheckeduncheckedProdNode[position, length], stack]; RETURN[stack] END; Seedefaulta: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; defaultopt: DefaultNode; defaultopt _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[defaultopt, stack]; RETURN[stack] END; Seedefaultempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildDefaultemptyProdNode[position, length], stack]; RETURN[stack] END; SeepositionP: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; exp: ExpNode; optbits: OptBitsNode; optbits _ NARROW[stack.first]; stack _ stack.rest; exp _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildPositionProdNode[position, length, exp, optbits], stack]; RETURN[stack] END; Seeoptbitspresent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; bounds: BoundsNode; bounds _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildOptBitspresentProdNode[position, length, bounds], stack]; RETURN[stack] END; Seeoptbitsabsent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildOptBitsabsentProdNode[position, length], stack]; RETURN[stack] END; Seesumsum: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; sum: ExpNode; addop: AddOpNode; product: ExpNode; product _ NARROW[stack.first]; stack _ stack.rest; addop _ NARROW[stack.first]; stack _ stack.rest; sum _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExpsumProdNode[position, length, sum, addop, product], stack]; RETURN[stack] END; Seesumproduct: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; product: ExpNode; product _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[product, stack]; RETURN[stack] END; Seeproductproduct: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; product: ExpNode; multop: MultOpNode; factor: ExpNode; factor _ NARROW[stack.first]; stack _ stack.rest; multop _ NARROW[stack.first]; stack _ stack.rest; product _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExpproductProdNode[position, length, product, multop, factor], stack]; RETURN[stack] END; Seeproductfactor: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; factor: ExpNode; factor _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[factor, stack]; RETURN[stack] END; Seemultoptimes: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildMultOptimesProdNode[position, length], stack]; RETURN[stack] END; Seemultopdivide: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildMultOpdivideProdNode[position, length], stack]; RETURN[stack] END; Seemultopmod: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildMultOpmodProdNode[position, length], stack]; RETURN[stack] END; Seefactorunarysum: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; addop: AddOpNode; primary: ExpNode; primary _ NARROW[stack.first]; stack _ stack.rest; addop _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExpunarysumProdNode[position, length, addop, primary], stack]; RETURN[stack] END; Seefactorprimary: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; primary: ExpNode; primary _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[primary, stack]; RETURN[stack] END; Seeaddopplus: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildAddOpplusProdNode[position, length], stack]; RETURN[stack] END; Seeaddopminus: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildAddOpminusProdNode[position, length], stack]; RETURN[stack] END; Seereadonlyyes: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildReadOnlyyesProdNode[position, length], stack]; RETURN[stack] END; Seereadonlyno: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildReadOnlynoProdNode[position, length], stack]; RETURN[stack] END; Seecatchany: 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[BuildCatchAnypresentProdNode[position, length, statement], stack]; RETURN[stack] END; Seeintervalcc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; bounds: BoundsNode; bounds _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildIntervalccProdNode[position, length, bounds], stack]; RETURN[stack] END; Seeintervaloc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; bounds: BoundsNode; bounds _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildIntervalocProdNode[position, length, bounds], stack]; RETURN[stack] END; Seeintervalco: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; bounds: BoundsNode; bounds _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildIntervalcoProdNode[position, length, bounds], stack]; RETURN[stack] END; Seeintervaloo: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; bounds: BoundsNode; bounds _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildIntervalooProdNode[position, length, bounds], stack]; RETURN[stack] END; Seeexpifthenelse: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; expcond: ExpNode; expthenpart: ExpNode; expelsepart: ExpNode; expelsepart _ NARROW[stack.first]; stack _ stack.rest; expthenpart _ NARROW[stack.first]; stack _ stack.rest; expcond _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExpifthenelseProdNode[position, length, expcond, expthenpart, expelsepart], stack]; RETURN[stack] END; Seeexpselect: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; casehead: SelectHeadNode; caseexplist: SelectExpListNode; exp: ExpNode; exp _ NARROW[stack.first]; stack _ stack.rest; caseexplist _ NARROW[stack.first]; stack _ stack.rest; casehead _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExpselectProdNode[position, length, casehead, caseexplist, exp], stack]; RETURN[stack] END; Seeexpassign: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; lhs: ExpNode; exp: ExpNode; exp _ NARROW[stack.first]; stack _ stack.rest; lhs _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExpassignProdNode[position, length, lhs, exp], stack]; RETURN[stack] END; Seeexpmultiassign: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; explist: ExpListNode; exp: ExpNode; exp _ NARROW[stack.first]; stack _ stack.rest; explist _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExpmultiassignProdNode[position, length, explist, exp], stack]; RETURN[stack] END; Seeexperror: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildExperrorProdNode[position, length], stack]; RETURN[stack] END; Seeexptransfer: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; transferop: TransferOpNode; lhs: ExpNode; lhs _ NARROW[stack.first]; stack _ stack.rest; transferop _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildExptransferProdNode[position, length, transferop, lhs], stack]; RETURN[stack] END; Seeexpdisjunct: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; disjunct: ExpNode; disjunct _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[disjunct, stack]; RETURN[stack] END; Seecaseexplistempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildSelectExpListemptyProdNode[position, length], stack]; RETURN[stack] END; Seecaseexplistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; caseexplistP: SelectExpListNode; caseexplistP _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[caseexplistP, stack]; RETURN[stack] END; Seecaseexplistc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; caseexplistP: SelectExpListNode; caseexplistP _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[caseexplistP, stack]; RETURN[stack] END; SeecaseexplistPa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; caseexpitem: SelectExpItemNode; caseexpitem _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildSelectExpListmoreProdNode[position, length, BuildSelectExpListemptyProdNode[caseexpitem.position, caseexpitem.position - caseexpitem.length], caseexpitem], stack]; RETURN[stack] END; SeecaseexplistPb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; caseexplistP: SelectExpListNode; caseexpitem: SelectExpItemNode; caseexpitem _ NARROW[stack.first]; stack _ stack.rest; caseexplistP _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildSelectExpListmoreProdNode[position, length, caseexplistP, caseexpitem], stack]; RETURN[stack] END; Seecaseexpitem: PROC[nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS[LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; caselabel: SelectLabelNode; exp: ExpNode; exp _ NARROW[stack.first]; stack _ stack.rest; caselabel _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildSelectExpItemProdNode[position, length, caselabel, exp], stack]; RETURN[stack] END; END.. ÐSaffronCG2Impl.mesa Copyright Ó 1987 by Xerox Corporation. All rights reserved. Generated by BJackson.pa at April 27, 1987 10:56:53 pm PDT using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT ʘšœ™Jšœ<™Jšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜KJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜Jšœ œ˜J˜Jšœœ˜J˜JšœœD˜PJšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜JJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœ œ˜J˜Jšœœ˜Jšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜FJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ2˜>Jšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜GJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ3˜?Jšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜HJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ4˜@Jšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜GJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ3˜?Jšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜EJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœ œ˜ J˜JšœœC˜OJšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜GJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœ œ˜J˜Jšœœ;˜GJšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜GJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœ œ˜J˜Jšœœ;˜GJšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜GJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœ œ˜J˜Jšœœ;˜GJšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜GJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœ œ˜J˜Jšœœ;˜GJšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜JJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜J˜Jšœœ˜"J˜Jšœœ˜"J˜Jšœ œ˜J˜JšœœY˜eJšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜FJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜J˜ Jšœœ˜J˜Jšœœ˜"J˜Jšœ œ˜J˜JšœœN˜ZJšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜FJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ J˜ Jšœœ˜J˜Jšœœ˜J˜Jšœœ<˜HJšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜KJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜ Jšœœ˜J˜Jšœ œ˜J˜JšœœE˜QJšœ˜ Jšœ˜J˜šž œœœœœœ œ œ˜EJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ1˜=Jšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜HJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜ Jšœœ˜J˜Jšœ œ˜!J˜JšœœE˜QJšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜HJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœ œ˜J˜Jšœœ˜Jšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜MJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ;˜GJšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜IJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ Jšœœ˜#J˜Jšœœ˜"Jšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜IJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ Jšœœ˜#J˜Jšœœ˜"Jšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜JJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜Jšœœ˜"J˜Jšœœ©˜µJšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜JJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ J˜Jšœœ˜"J˜Jšœœ˜#J˜JšœœU˜aJšœ˜ Jšœ˜J˜šžœœœœœœ œ œ˜HJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜ Jšœœ˜J˜Jšœ œ˜ J˜JšœœF˜RJšœ˜ Jšœ˜J˜Jšœ˜J˜—…—8¼Q