<> <> <> <> DIRECTORY RiscAssemblerAGDef, RiscAssemblerATDef, RiscAssemblerTokenDef; RiscAssemblerAGImpl: CEDAR PROGRAM IMPORTS RiscAssemblerAGDef EXPORTS RiscAssemblerAGDef= BEGIN OPEN RiscAssemblerAGDef, RiscAssemblerATDef, RiscAssemblerTokenDef; <> ProgramlistProdProcs: PUBLIC ProgramNodeProcs _ NEW[ProgramNodeProcsBody _ [ProgramlistProdAssemble]]; BuildProgramlistProdNode: PUBLIC PROC[position: INT, length: INT, List: ListNode] RETURNS[ProgramNode] = BEGIN data: ProgramlistProdData _ NEW[ProgramlistProdDataBody _ [ List]]; RETURN[NEW[ProgramNodeBody_[position, length, ProgramlistProdProcs, data]]]; END; <> ListstatementProdProcs: PUBLIC ListNodeProcs _ NEW[ListNodeProcsBody _ [ListstatementProdSymbolTable, ListstatementProdCodeSequence]]; BuildListstatementProdNode: PUBLIC PROC[position: INT, length: INT, Statement: StatementNode] RETURNS[ListNode] = BEGIN data: ListstatementProdData _ NEW[ListstatementProdDataBody _ [ Statement]]; RETURN[NEW[ListNodeBody_[position, length, ListstatementProdProcs, data]]]; END; <> ListdangleProdProcs: PUBLIC ListNodeProcs _ NEW[ListNodeProcsBody _ [ListdangleProdSymbolTable, ListdangleProdCodeSequence]]; BuildListdangleProdNode: PUBLIC PROC[position: INT, length: INT, Statement: StatementNode] RETURNS[ListNode] = BEGIN data: ListdangleProdData _ NEW[ListdangleProdDataBody _ [ Statement]]; RETURN[NEW[ListNodeBody_[position, length, ListdangleProdProcs, data]]]; END; <> ListconsProdProcs: PUBLIC ListNodeProcs _ NEW[ListNodeProcsBody _ [ListconsProdSymbolTable, ListconsProdCodeSequence]]; BuildListconsProdNode: PUBLIC PROC[position: INT, length: INT, Statement: StatementNode, List: ListNode] RETURNS[ListNode] = BEGIN data: ListconsProdData _ NEW[ListconsProdDataBody _ [ Statement, List]]; RETURN[NEW[ListNodeBody_[position, length, ListconsProdProcs, data]]]; END; <> StatementlabelProdProcs: PUBLIC StatementNodeProcs _ NEW[StatementNodeProcsBody _ [StatementlabelProdSymbolTable, StatementlabelProdCodeSequence]]; BuildStatementlabelProdNode: PUBLIC PROC[position: INT, length: INT, Label: LabelNode, Statement: StatementNode] RETURNS[StatementNode] = BEGIN data: StatementlabelProdData _ NEW[StatementlabelProdDataBody _ [ Label, Statement]]; RETURN[NEW[StatementNodeBody_[position, length, StatementlabelProdProcs, data]]]; END; <> StatementopProdProcs: PUBLIC StatementNodeProcs _ NEW[StatementNodeProcsBody _ [StatementopProdSymbolTable, StatementopProdCodeSequence]]; BuildStatementopProdNode: PUBLIC PROC[position: INT, length: INT, Op: OpNode] RETURNS[StatementNode] = BEGIN data: StatementopProdData _ NEW[StatementopProdDataBody _ [ Op]]; RETURN[NEW[StatementNodeBody_[position, length, StatementopProdProcs, data]]]; END; <> StatementoprandProdProcs: PUBLIC StatementNodeProcs _ NEW[StatementNodeProcsBody _ [StatementoprandProdSymbolTable, StatementoprandProdCodeSequence]]; BuildStatementoprandProdNode: PUBLIC PROC[position: INT, length: INT, Op: OpNode, Rand: RandNode] RETURNS[StatementNode] = BEGIN data: StatementoprandProdData _ NEW[StatementoprandProdDataBody _ [ Op, Rand]]; RETURN[NEW[StatementNodeBody_[position, length, StatementoprandProdProcs, data]]]; END; <> LabelidProdProcs: PUBLIC LabelNodeProcs _ NEW[LabelNodeProcsBody _ [LabelidProdNotePosition]]; BuildLabelidProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode] RETURNS[LabelNode] = BEGIN data: LabelidProdData _ NEW[LabelidProdDataBody _ [ id]]; RETURN[NEW[LabelNodeBody_[position, length, LabelidProdProcs, data]]]; END; <> OpnoopProdProcs: PUBLIC OpNodeProcs _ NEW[OpNodeProcsBody _ [OpnoopProdInstruction, OpnoopProdInstructionRand]]; BuildOpnoopProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[OpNode] = BEGIN RETURN[NEW[OpNodeBody_[position, length, OpnoopProdProcs, NIL]]]; END; <> OpgotoProdProcs: PUBLIC OpNodeProcs _ NEW[OpNodeProcsBody _ [OpgotoProdInstruction, OpgotoProdInstructionRand]]; BuildOpgotoProdNode: PUBLIC PROC[position: INT, length: INT] RETURNS[OpNode] = BEGIN RETURN[NEW[OpNodeBody_[position, length, OpgotoProdProcs, NIL]]]; END; <> RandidProdProcs: PUBLIC RandNodeProcs _ NEW[RandNodeProcsBody _ [RandidProdIndex]]; BuildRandidProdNode: PUBLIC PROC[position: INT, length: INT, id: idNode] RETURNS[RandNode] = BEGIN data: RandidProdData _ NEW[RandidProdDataBody _ [ id]]; RETURN[NEW[RandNodeBody_[position, length, RandidProdProcs, data]]]; END; END..