-- SaffronAG4Impl.mesa
 -- Copyright س 1987 by Xerox Corporation.  All rights reserved.
 -- Generated by hederman.pa at August 17, 1987 4:33:06 pm PDT
 --  using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT

DIRECTORY
	SaffronAG4Def,
	SaffronGenericDef,
	SaffronATDef;

SaffronAG4Impl: CEDAR PROGRAM IMPORTS SaffronAG4Def EXPORTS SaffronAG4Def= 
BEGIN
OPEN SaffronAG4Def, SaffronGenericDef, SaffronATDef;

-- StatementifthenProd

StatementifthenProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementifthenProdHangContextsFromContextTree]];

BuildStatementifthenProdNode:	PUBLIC PROC[position: INT, length: INT, Exp: ExpNode, Statement: StatementNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementifthenProdData _
			NEW[StatementifthenProdDataBody _ [
			Exp, Statement]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementifthenProdProcs, data]]];
		END;


-- StatementifthenelseProd

StatementifthenelseProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementifthenelseProdHangContextsFromContextTree]];

BuildStatementifthenelseProdNode:	PUBLIC PROC[position: INT, length: INT, Exp: ExpNode, Statementthenpart: StatementNode, Statementelsepart: StatementNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementifthenelseProdData _
			NEW[StatementifthenelseProdDataBody _ [
			Exp, Statementthenpart, Statementelsepart]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementifthenelseProdProcs, data]]];
		END;


-- StatementselectProd

StatementselectProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementselectProdHangContextsFromContextTree]];

BuildStatementselectProdNode:	PUBLIC PROC[position: INT, length: INT, SelectHead: SelectHeadNode, SelectStmtList: SelectStmtListNode, OptStatement: OptStatementNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementselectProdData _
			NEW[StatementselectProdDataBody _ [
			SelectHead, SelectStmtList, OptStatement]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementselectProdProcs, data]]];
		END;


-- StatementexpProd

StatementexpProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementexpProdHangContextsFromContextTree]];

BuildStatementexpProdNode:	PUBLIC PROC[position: INT, length: INT, Exp: ExpNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementexpProdData _
			NEW[StatementexpProdDataBody _ [
			Exp]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementexpProdProcs, data]]];
		END;


-- StatementassignProd

StatementassignProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementassignProdHangContextsFromContextTree]];

BuildStatementassignProdNode:	PUBLIC PROC[position: INT, length: INT, Explhs: ExpNode, Exprhs: ExpNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementassignProdData _
			NEW[StatementassignProdDataBody _ [
			Explhs, Exprhs]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementassignProdProcs, data]]];
		END;


-- StatementmultiassignProd

StatementmultiassignProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementmultiassignProdHangContextsFromContextTree]];

BuildStatementmultiassignProdNode:	PUBLIC PROC[position: INT, length: INT, ExpList: ExpListNode, Exp: ExpNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementmultiassignProdData _
			NEW[StatementmultiassignProdDataBody _ [
			ExpList, Exp]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementmultiassignProdProcs, data]]];
		END;


-- StatementblockProd

StatementblockProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementblockProdHangContextsFromContextTree]];

BuildStatementblockProdNode:	PUBLIC PROC[position: INT, length: INT, Checked: CheckedNode, Block: BlockNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementblockProdData _
			NEW[StatementblockProdDataBody _ [
			Checked, Block]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementblockProdProcs, data]]];
		END;


-- StatementloopcontrolProd

StatementloopcontrolProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementloopcontrolProdHangContextsFromContextTree]];

BuildStatementloopcontrolProdNode:	PUBLIC PROC[position: INT, length: INT, ForClause: ForClauseNode, DoTest: DoTestNode, Scope: ScopeNode, DoExit: DoExitNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementloopcontrolProdData _
			NEW[StatementloopcontrolProdDataBody _ [
			ForClause, DoTest, Scope, DoExit]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementloopcontrolProdProcs, data]]];
		END;


-- StatementexitProd

StatementexitProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementexitProdHangContextsFromContextTree]];

BuildStatementexitProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementexitProdProcs, NIL]]];
		END;


-- StatementloopProd

StatementloopProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementloopProdHangContextsFromContextTree]];

BuildStatementloopProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementloopProdProcs, NIL]]];
		END;


-- StatementgotoProd

StatementgotoProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementgotoProdHangContextsFromContextTree]];

BuildStatementgotoProdNode:	PUBLIC PROC[position: INT, length: INT, Id: IdNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementgotoProdData _
			NEW[StatementgotoProdDataBody _ [
			Id]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementgotoProdProcs, data]]];
		END;


-- StatementreturnProd

StatementreturnProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementreturnProdHangContextsFromContextTree]];

BuildStatementreturnProdNode:	PUBLIC PROC[position: INT, length: INT, OptArgs: OptArgsNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementreturnProdData _
			NEW[StatementreturnProdDataBody _ [
			OptArgs]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementreturnProdProcs, data]]];
		END;


-- StatementtransferProd

StatementtransferProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementtransferProdHangContextsFromContextTree]];

BuildStatementtransferProdNode:	PUBLIC PROC[position: INT, length: INT, Transfer: TransferNode, Exp: ExpNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementtransferProdData _
			NEW[StatementtransferProdDataBody _ [
			Transfer, Exp]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementtransferProdProcs, data]]];
		END;


-- StatementfreeProd

StatementfreeProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementfreeProdHangContextsFromContextTree]];

BuildStatementfreeProdNode:	PUBLIC PROC[position: INT, length: INT, Free: FreeNode, Exp: ExpNode, Catch: CatchNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementfreeProdData _
			NEW[StatementfreeProdDataBody _ [
			Free, Exp, Catch]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementfreeProdProcs, data]]];
		END;


-- StatementwaitProd

StatementwaitProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementwaitProdHangContextsFromContextTree]];

BuildStatementwaitProdNode:	PUBLIC PROC[position: INT, length: INT, Exp: ExpNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementwaitProdData _
			NEW[StatementwaitProdDataBody _ [
			Exp]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementwaitProdProcs, data]]];
		END;


-- StatementerrorProd

StatementerrorProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementerrorProdHangContextsFromContextTree]];

BuildStatementerrorProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementerrorProdProcs, NIL]]];
		END;


-- StatementstopProd

StatementstopProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementstopProdHangContextsFromContextTree]];

BuildStatementstopProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementstopProdProcs, NIL]]];
		END;


-- StatementnullProd

StatementnullProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementnullProdHangContextsFromContextTree]];

BuildStatementnullProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementnullProdProcs, NIL]]];
		END;


-- StatementresumeProd

StatementresumeProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementresumeProdHangContextsFromContextTree]];

BuildStatementresumeProdNode:	PUBLIC PROC[position: INT, length: INT, OptArgs: OptArgsNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementresumeProdData _
			NEW[StatementresumeProdDataBody _ [
			OptArgs]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementresumeProdProcs, data]]];
		END;


-- StatementrejectProd

StatementrejectProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementrejectProdHangContextsFromContextTree]];

BuildStatementrejectProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementrejectProdProcs, NIL]]];
		END;


-- StatementcontinueProd

StatementcontinueProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementcontinueProdHangContextsFromContextTree]];

BuildStatementcontinueProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementcontinueProdProcs, NIL]]];
		END;


-- StatementretryProd

StatementretryProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementretryProdHangContextsFromContextTree]];

BuildStatementretryProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementNode] =
		BEGIN
		RETURN[NEW[StatementNodeBody_[position, length, StatementretryProdProcs, NIL]]];
		END;


-- StatementgetstateProd

StatementgetstateProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementgetstateProdHangContextsFromContextTree]];

BuildStatementgetstateProdNode:	PUBLIC PROC[position: INT, length: INT, Exp: ExpNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementgetstateProdData _
			NEW[StatementgetstateProdDataBody _ [
			Exp]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementgetstateProdProcs, data]]];
		END;


-- StatementsetstateProd

StatementsetstateProdProcs:	PUBLIC StatementNodeProcs _
	NEW[StatementNodeProcsBody _ [StatementsetstateProdHangContextsFromContextTree]];

BuildStatementsetstateProdNode:	PUBLIC PROC[position: INT, length: INT, Exp: ExpNode]
	RETURNS[StatementNode] =
		BEGIN
		data:	StatementsetstateProdData _
			NEW[StatementsetstateProdDataBody _ [
			Exp]];
		RETURN[NEW[StatementNodeBody_[position, length, StatementsetstateProdProcs, data]]];
		END;


-- OptStatementabsentProd

OptStatementabsentProdProcs:	PUBLIC OptStatementNodeProcs _
	NEW[OptStatementNodeProcsBody _ [OptStatementabsentProdfoo]];

BuildOptStatementabsentProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[OptStatementNode] =
		BEGIN
		RETURN[NEW[OptStatementNodeBody_[position, length, OptStatementabsentProdProcs, NIL]]];
		END;


-- OptStatementpresentProd

OptStatementpresentProdProcs:	PUBLIC OptStatementNodeProcs _
	NEW[OptStatementNodeProcsBody _ [OptStatementpresentProdfoo]];

BuildOptStatementpresentProdNode:	PUBLIC PROC[position: INT, length: INT, Statement: StatementNode]
	RETURNS[OptStatementNode] =
		BEGIN
		data:	OptStatementpresentProdData _
			NEW[OptStatementpresentProdDataBody _ [
			Statement]];
		RETURN[NEW[OptStatementNodeBody_[position, length, OptStatementpresentProdProcs, data]]];
		END;


-- SelectStmtListemptyProd

SelectStmtListemptyProdProcs:	PUBLIC SelectStmtListNodeProcs _
	NEW[SelectStmtListNodeProcsBody _ [SelectStmtListemptyProdfoo]];

BuildSelectStmtListemptyProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[SelectStmtListNode] =
		BEGIN
		RETURN[NEW[SelectStmtListNodeBody_[position, length, SelectStmtListemptyProdProcs, NIL]]];
		END;


-- SelectStmtListmoreProd

SelectStmtListmoreProdProcs:	PUBLIC SelectStmtListNodeProcs _
	NEW[SelectStmtListNodeProcsBody _ [SelectStmtListmoreProdfoo]];

BuildSelectStmtListmoreProdNode:	PUBLIC PROC[position: INT, length: INT, SelectStmtList: SelectStmtListNode, SelectStmtItem: SelectStmtItemNode]
	RETURNS[SelectStmtListNode] =
		BEGIN
		data:	SelectStmtListmoreProdData _
			NEW[SelectStmtListmoreProdDataBody _ [
			SelectStmtList, SelectStmtItem]];
		RETURN[NEW[SelectStmtListNodeBody_[position, length, SelectStmtListmoreProdProcs, data]]];
		END;


-- SelectStmtItemProd

SelectStmtItemProdProcs:	PUBLIC SelectStmtItemNodeProcs _
	NEW[SelectStmtItemNodeProcsBody _ [SelectStmtItemProdfoo]];

BuildSelectStmtItemProdNode:	PUBLIC PROC[position: INT, length: INT, SelectLabel: SelectLabelNode, Statement: StatementNode]
	RETURNS[SelectStmtItemNode] =
		BEGIN
		data:	SelectStmtItemProdData _
			NEW[SelectStmtItemProdDataBody _ [
			SelectLabel, Statement]];
		RETURN[NEW[SelectStmtItemNodeBody_[position, length, SelectStmtItemProdProcs, data]]];
		END;


-- BlockProd

BlockProdProcs:	PUBLIC BlockNodeProcs _
	NEW[BlockNodeProcsBody _ [BlockProdHangContextsFromContextTree]];

BuildBlockProdNode:	PUBLIC PROC[position: INT, length: INT, Scope: ScopeNode, ExitList: ExitListNode]
	RETURNS[BlockNode] =
		BEGIN
		data:	BlockProdData _
			NEW[BlockProdDataBody _ [
			Scope, ExitList]];
		RETURN[NEW[BlockNodeBody_[position, length, BlockProdProcs, data]]];
		END;


-- ScopeProd

ScopeProdProcs:	PUBLIC ScopeNodeProcs _
	NEW[ScopeNodeProcsBody _ [ScopeProdMakeContextTree, ScopeProdMakeContextTree1]];

BuildScopeProdNode:	PUBLIC PROC[position: INT, length: INT, BindList: BindListNode, Catch: CatchNode, OptDecList: OptDecListNode, StatementList: StatementListNode]
	RETURNS[ScopeNode] =
		BEGIN
		data:	ScopeProdData _
			NEW[ScopeProdDataBody _ [
			BindList, Catch, OptDecList, StatementList]];
		RETURN[NEW[ScopeNodeBody_[position, length, ScopeProdProcs, data]]];
		END;


-- OptDecListabsentProd

OptDecListabsentProdProcs:	PUBLIC OptDecListNodeProcs _
	NEW[OptDecListNodeProcsBody _ [OptDecListabsentProdUpdateLocalContext, OptDecListabsentProdHangContextsFromContextTree]];

BuildOptDecListabsentProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[OptDecListNode] =
		BEGIN
		RETURN[NEW[OptDecListNodeBody_[position, length, OptDecListabsentProdProcs, NIL]]];
		END;


-- OptDecListpresentProd

OptDecListpresentProdProcs:	PUBLIC OptDecListNodeProcs _
	NEW[OptDecListNodeProcsBody _ [OptDecListpresentProdUpdateLocalContext, OptDecListpresentProdHangContextsFromContextTree]];

BuildOptDecListpresentProdNode:	PUBLIC PROC[position: INT, length: INT, DecList: DecListNode]
	RETURNS[OptDecListNode] =
		BEGIN
		data:	OptDecListpresentProdData _
			NEW[OptDecListpresentProdDataBody _ [
			DecList]];
		RETURN[NEW[OptDecListNodeBody_[position, length, OptDecListpresentProdProcs, data]]];
		END;


-- StatementListemptyProd

StatementListemptyProdProcs:	PUBLIC StatementListNodeProcs _
	NEW[StatementListNodeProcsBody _ [StatementListemptyProdHangContextsFromContextTree]];

BuildStatementListemptyProdNode:	PUBLIC PROC[position: INT, length: INT]
	RETURNS[StatementListNode] =
		BEGIN
		RETURN[NEW[StatementListNodeBody_[position, length, StatementListemptyProdProcs, NIL]]];
		END;


-- StatementListmoreProd

StatementListmoreProdProcs:	PUBLIC StatementListNodeProcs _
	NEW[StatementListNodeProcsBody _ [StatementListmoreProdHangContextsFromContextTree]];

BuildStatementListmoreProdNode:	PUBLIC PROC[position: INT, length: INT, StatementList: StatementListNode, Statement: StatementNode]
	RETURNS[StatementListNode] =
		BEGIN
		data:	StatementListmoreProdData _
			NEW[StatementListmoreProdDataBody _ [
			StatementList, Statement]];
		RETURN[NEW[StatementListNodeBody_[position, length, StatementListmoreProdProcs, data]]];
		END;

END..