DIRECTORY RiscAssemblerAGDef, RiscAssemblerATDef, ThreeC4Support, RiscAssemblerCGDef USING[], RiscAssemblerTokenDef; RiscAssemblerCGImpl: CEDAR PROGRAM IMPORTS RiscAssemblerAGDef EXPORTS RiscAssemblerCGDef= BEGIN OPEN RiscAssemblerAGDef, RiscAssemblerATDef, ThreeC4Support, RiscAssemblerTokenDef; RiscAssemblerCGLinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] = BEGIN prodLinkArray[0] _ Seegoal; prodLinkArray[1] _ Seeprogramlist; prodLinkArray[2] _ Seeliststatement; prodLinkArray[3] _ Seelistdangle; prodLinkArray[4] _ Seelistcons; prodLinkArray[5] _ Seestatementlabel; prodLinkArray[6] _ Seestatementop; prodLinkArray[7] _ Seestatementoprand; prodLinkArray[8] _ Seelabelid; prodLinkArray[9] _ Seeopnoop; prodLinkArray[10] _ Seeopgoto; prodLinkArray[11] _ Seerandid; END; Seegoal: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; program: ProgramNode; program _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[program, stack]; RETURN [stack] END; Seeprogramlist: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; list: ListNode; list _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildProgramlistProdNode[position, length, list], stack]; RETURN [stack] END; Seeliststatement: 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[BuildListstatementProdNode[position, length, statement], stack]; RETURN [stack] END; Seelistdangle: 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[BuildListdangleProdNode[position, length, statement], stack]; RETURN [stack] END; Seelistcons: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; statement: StatementNode; list: ListNode; list _ NARROW[stack.first]; stack _ stack.rest; statement _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildListconsProdNode[position, length, statement, list], stack]; RETURN [stack] END; Seestatementlabel: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; label: LabelNode; statement: StatementNode; statement _ NARROW[stack.first]; stack _ stack.rest; label _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildStatementlabelProdNode[position, length, label, statement], stack]; RETURN [stack] END; Seestatementop: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; op: OpNode; op _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildStatementopProdNode[position, length, op], stack]; RETURN [stack] END; Seestatementoprand: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; op: OpNode; rand: RandNode; rand _ NARROW[stack.first]; stack _ stack.rest; op _ NARROW[stack.first]; stack _ stack.rest; stack _ CONS[BuildStatementoprandProdNode[position, length, op, rand], stack]; RETURN [stack] END; Seelabelid: 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[BuildLabelidProdNode[position, length, id], stack]; RETURN [stack] END; Seeopnoop: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildOpnoopProdNode[position, length], stack]; RETURN [stack] END; Seeopgoto: PROC [nodes: LIST OF REF ANY, position: INT, length: INT] RETURNS [LIST OF REF ANY] = BEGIN stack: LIST OF REF ANY _ nodes; stack _ CONS[BuildOpgotoProdNode[position, length], stack]; RETURN [stack] END; Seerandid: 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[BuildRandidProdNode[position, length, id], stack]; RETURN [stack] END; END.. ÐRiscAssemblerCGImpl.mesa Copyright Ó 1987 by Xerox Corporation. All rights reserved. Generated by hederman.pa at July 15, 1987 4:53:06 pm PDT using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT Ê“˜šœ™Jšœ<™˜JJšœ˜Jšœ˜J˜šž œœ œœœœ œ œ˜FJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜Jšœœ˜J˜Jšœ œ˜ J˜JšœœB˜NJšœ˜Jšœ˜J˜šžœœ œœœœ œ œ˜LJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜J˜Jšœ œ˜ J˜Jšœœ˜J˜JšœœI˜UJšœ˜Jšœ˜J˜šžœœ œœœœ œ œ˜IJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ Jšœœ˜J˜Jšœœ8˜DJšœ˜Jšœ˜J˜šžœœ œœœœ œ œ˜MJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ J˜Jšœœ˜J˜Jšœœ˜J˜JšœœB˜NJšœ˜Jšœ˜J˜šž œœ œœœœ œ œ˜EJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ Jšœœ˜J˜Jšœœ4˜@Jšœ˜Jšœ˜J˜šž œœ œœœœ œ œ˜DJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ/˜;Jšœ˜Jšœ˜J˜šž œœ œœœœ œ œ˜DJš œœœœœ˜—Jš˜Jš œœœœœ ˜Jšœœ/˜;Jšœ˜Jšœ˜J˜šž œœ œœœœ œ œ˜DJš œœœœœ˜—Jš˜Jš œœœœœ ˜J˜ Jšœœ˜J˜Jšœœ3˜?Jšœ˜Jšœ˜J˜Jšœ˜J˜—…—N±